const path = require('path')
const fs = require('fs')
const router = require('koa-router')()
const sendfile = require('koa-sendfile')
const send = require('koa-send')
const fileModel = require('../../models/file')
const bodyParser = require('koa-bodyparser')

const dao = require('../../dao/' + path.basename(__dirname))
const jwt = require("jsonwebtoken");

const routerUploadAndDownloadVariable = require("../../config/file_service");

// 此jwtPassword仅是Upload和Download路由所使用的常量
const jwtPassword = routerUploadAndDownloadVariable.jwtPassword

// changePath 变量所指向的绝对路径是指向/wepan文件夹下面的
const changePath = routerUploadAndDownloadVariable.changePath
// 文件储存在磁盘中的地址
const address = routerUploadAndDownloadVariable.address
/*
    修改文件在磁盘中的存储格式；
    1 为真实路径（存储在文件夹下，文件名为真实文件名），0 为虚拟路径（所有文件存储在一个文件夹内，文件名为文件哈希值）
 */
const saveType = routerUploadAndDownloadVariable.saveType

router.get('/', async (ctx, next) => {
    try{

        // 解析jwt
        const decode = await jwt.verify(ctx.request.query.auth, jwtPassword)
        console.log(decode)

        // 根据前端发送的ID寻找相应文件
        const thisFile = await fileModel.findOne({
            where: {
                id: decode.file_id
            }
        })

        // 下载文件
        const name = thisFile.name
        const hash = thisFile.hash
        const location = thisFile.location

        let paths = location

        ctx.attachment(paths)
        await send(ctx, paths, {root : '/'})

        if(!ctx.status) ctx.throw(404)

    } catch(err) {
        return ctx.body = {
            message : err.message
        }
    }

})

module.exports = router.routes();